<?php
/**
 * 年齢指定により動的にメンバー選択メニューのメンバーが変化するメンバー選択メニュークラスモジュール
 */
require_once 'Smarty/Components/select.php';
require_once dirname(__FILE__) . '/Mapper.php';

/**
 * 年齢指定により動的にメンバー選択メニューのデフォルト選択値が変化するメンバー選択メニュークラス
 */
class Components_MenuMemberConectedAge_Controller extends Components
{
	/** @var 学校種別 */
	protected $_SchoolType;
	/** @var 初期選択年齢 */
	protected $_sDefaultAge;
	/** @var 学年選択メニュ */
	protected $_objComponentGakunenSelect;
	/** @var メンバー選択メニュー */
	protected $_objComponentMemberSelect;
	/** @var メンバーデータマッパ */
	protected $_objMapper;

	/**
	 * コンストラクタ
	 * @param  $sCompileId
	 * @param  $SchoolType 学校種別
	 * @param  $sDefaultAge 初期選択年齢
	 */
	public function __construct($sCompileId, $SchoolType, $sDefaultAge)
	{
		parent::__construct(dirname(__FILE__), $sCompileId);
		$this->_SchoolType = $SchoolType;
		$this->_sDefaultAge = $sDefaultAge;
		$this->_objMapper = new Components_MenuMemberConectedAge_Mapper();
		$this->_objMapper->loadFromFile();
	}

	/**
	 * メンバー選択メニュー初期化
	 */
	protected function _initMemberSelect()
	{
		$aryMemberListOfAges = array();
		$iStartGakunen = 1;
		$iStartAge = 7;
		$iLimitGakunen = 6;

		/**
		 * 学校種別による開始年齢制御
		 */
		switch($this->_SchoolType) {
			case Models_Players_Controller::MIDDLE_SCHOOL:
				$iStartAge = 13;
				$iLimitGakunen = 3;
				break;
			case Models_Players_Controller::HIGH_SCHOOL:
				$iStartAge = 16;
				$iLimitGakunen = 3;
				break;
		}
		/***
		 * 学年毎にメニューオプションを作成する
		 */
		while ($iStartGakunen <= $iLimitGakunen) {
			/***
			 * 学年をＵ年齢に変換
			 */
			$iSearchAge = $iStartAge + $iStartGakunen - 1;
			$sSearchValue = 'U'.$iSearchAge;
			/***
			 * 対象学年のＳＥＬＥＣＴオプション作成
			 */
			$aryMemberListOfAges[$sSearrchValue] = $iStartGakunen . '年生';
			$aryMemberList = $this->_creatMemberOptions($sSearchValue, $iStartGakunen);
			$aryMemberListOfAges = array_merge($aryMemberListOfAges, $aryMemberList);

			$iStartGakunen ++;
		}
		/***
		 * メンバー選択メニューコンポーネントオブジェクト初期化
		 */
		$this->_objComponentMemberSelect
		= new Smarty_Components_Select(
				$this->_sCompileDir,
				$this->_sCompileId,
				Models_Players_Controller::KEY_ID,
				$aryMemberListOfAges
			);
	}

	/**
	 * 指定年齢によりメンバー選択セレクトオプション用の配列を返す
	 * @param unknown_type $sSearchAge 検索年齢
	 * @return array
	 * $aryRet[ＩＤ]=指名
	 */
	protected function _creatMemberOptions($sSearchAge)
	{
		$aryMemberList = $this->_objMapper->getPlayerList(array($sSearchAge));
		$aryOptions = array();
		foreach ($aryMemberList as $aryMemberInfo) {
			$aryOptions[$arymemberInfo[Models_Players_Controller::KEY_ID]]
			= $aryMemberInfo[Models_Players_Controller::KEY_NAME];
		}
		return $aryOptions;
	}

	/**
	 * 学年選択メニュー初期化
	 */
	protected function _initGakunenSelect()
	{
		$SchoolKind = $this->_SchoolType;
		$aryAgeOptions = array();
		switch	($SchoolKind) {
			case Models_Players_Controller::JUNIOR_SCHOOL:
				$aryAgeOptions
				= array(
				'U7'=>'１年生',
				'U8'=>'２年生',
				'U9'=>'３年生',
				'U10'=>'４年生',
				'U11'=>'５年生',
				'U12'=>'６年生',
				);
				break;
			case Models_Players_Controller::MIDDLE_SCHOOL:
				$aryAgeOptions
				= array(
				'U13'=>'１年生',
				'U14'=>'２年生',
				'U15'=>'３年生',
				);
				break;
			case Models_Players_Controller::HIGH_SCHOOL:
				$aryAgeOptions
				= array(
				'U16'=>'１年生',
				'U17'=>'２年生',
				'U18'=>'３年生',
				);
				break;
		}

		$this->_objComponentGakunenSelect
		= new Smarty_Components_Select(
				$this->_sCompileDir,
				$this->_sCompileId,
				Models_Players_Controller::KEY_AGE,
				$aryAgeOptions);
	}


}